package cn.txun05.csmall.product.service.impl;

import cn.txun05.csmall.commons.ex.ServiceException;
import cn.txun05.csmall.product.mapper.AttributeTemplateMapper;
import cn.txun05.csmall.product.pojo.entity.Album;
import cn.txun05.csmall.product.pojo.entity.AttributeTemplate;
import cn.txun05.csmall.product.pojo.param.AttributeTemplateAddNewParam;
import cn.txun05.csmall.product.service.IAttributeTemplateService;
import cn.txun05.csmall.commons.web.ServiceCode;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;

@Service
@Slf4j
public class AttributeTemplateServiceImpl implements IAttributeTemplateService {
    @Autowired
    private AttributeTemplateMapper attributeTemplateMapper;
    @Override
    public void addNew(AttributeTemplateAddNewParam attributeTemplateAddNewParam) {
        log.debug("开始处理【添加属性模版】的业务，参数：{}",attributeTemplateAddNewParam);
        //检查相册名称是否被占用，如果被占用 则抛出异常
        QueryWrapper<AttributeTemplate> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("name",attributeTemplateAddNewParam.getName());//name="XXXXXX"
        int countByName =attributeTemplateMapper.selectCount(queryWrapper);
        log.debug("根据相册名称统计匹配的属性模版数量，结果：{}",countByName);
        if(countByName>0){
            String message= "添加属性模版失败，属性模版的名称已经存在!";
            log.warn(message);
            //System.out.println(message);
            throw new ServiceException(ServiceCode.ERR_CONFLICT,message);
        }

        //将属性模版的数据写入数据库中
        AttributeTemplate attributeTemplate = new AttributeTemplate();
        BeanUtils.copyProperties(attributeTemplateAddNewParam,attributeTemplate);
        attributeTemplate.setGmtCreate(LocalDateTime.now());
        attributeTemplate.setGmtModified(LocalDateTime.now());
        log.debug("准备将新的相册数据写入到数据库，数据：{}",attributeTemplate);
        attributeTemplateMapper.insert(attributeTemplate);
        log.debug("将新的相册数据写入到数据库中，完成！");


    }
}
